home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
011-020
/
amok13
/
compcontrol
/
getconfig.mod
< prev
next >
Wrap
Text File
|
1993-11-04
|
5KB
|
203 lines
(******************************************************************************)
(*
PROGRAMMNAME : GetConfig.mod
VERSION : 0.01
AUTOR : Ralf Kaiser
Winckelmannstraße 1
5600 Wuppertal 2
Start : 11.01.89
Update : 13.01.89
Ende : 21.01.89
Dieser Programmteil liest die Konfigurationsdatei für das Programm
CompControl. Sie enthält die Namen von Editor, Compiler und Linker,
sowie die Endungen der zu bearbeitenden Files.
Die gelesenen Daten werden überprüft und in Form eines RECORDS an das
Hauptprogramm weitergeleitet.
Die Konfigurationsdatei hat den Namen "CC.config". Sie befindet sich
entweder in dem Verzeichnis, das bei Aufruf von CompControl aktuell
war oder in DEVS:.
Wird CC.config nicht gefunden, werden die Namen der einzelnen Programme
mit Standardwerten belegt.
Das Format der Konfigurationsdatei :
Die Reihenfolge der einzelnen Elemente ist festgelegt. Für den Compiler
können 2 verschiedene Programme eingesetzt werden, damit man an Stelle
des zweiten Compilers z.B. einen Assembler starten kann.
Die Komponenten :
Name des Editors (z.B. "C:M2EMACS ")
Name 1. Compiler (z.B. "C:M2C -d ")
Endung 1. Compiler (z.B. ".MOD" )
Name 2. Compiler (z.B. "C:M2C -d -q ")
Endung 2. Compiler (z.B. ".DEF ")
Name Linker (z.B. "C:M2L -x ")
Endung Linker (z.B. ".OBJ ")
Beispiel 1 :
C:M2EMACS - Editor : M2Emacs im C-Dir (immer vollen Pfad angeben !)
C:M2C -d - Übersetzer 1 : M2c (Optionen mit angeben !)
.MOD - Endung für Übersetzer 1 : .MOD
C:M2C -d - Übersetzer 2 : Wieder M2c
.DEF - Endung für Übersetzer 2 : .DEF (so kann manauch
Definitionsmoduln bearbeiten)
C:M2L - Linker : M2l
.OBJ - Endung für den Linker : .OBJ
Diese Datei wäre für Modula-2 Programmierer geeignet.
Die Kommentare gehören nicht zur Datei !!!
Beispiel 2
C:ED
C:CC
.C
C:AS
.ASM
C:BLINK
.OBJ
Diese Datei könnten C-Programmierer (hier Atztec-C) gebrauchen.
Hier wird dann, anstatt den Compiler mit einer anderen Endung zu starten,
ein Assembler aufgerufen.
*)
(******************************************************************************)
IMPLEMENTATION MODULE GetConfig;
FROM SYSTEM IMPORT
ADR;
FROM FileSystem IMPORT
Response, File, Lookup, Close, ReadByteBlock;
FROM Strings IMPORT
Delete, Copy, Insert, first, last;
CONST
DEFEDITOR = "C:M2EMACS ";
DEFCOMP1 = "C:M2C -d ";
DEFEND1 = ".MOD";
DEFCOMP2 = "C:M2C ";
DEFEND2 = ".DEF";
DEFLINK = "C:M2L ";
DEFOBJ = ".OBJ"; (* Defaultwerte *)
CONFDAT1 = "CC.config";
CONFDAT2 = "DEVS:CC.config";
VAR Konfig: CCCONFIG;
Datei: File;
Char: ARRAY [0..0 ] OF CHAR;
ZKette: ARRAY [0..80] OF CHAR;
OK: BOOLEAN;
len: INTEGER;
PROCEDURE MakeDefaultConf (VAR Konfig: CCCONFIG);
BEGIN
WITH Konfig DO
Editor := DEFEDITOR;
Comp1 := DEFCOMP1;
End1 := DEFEND1;
Comp2 := DEFCOMP2;
End2 := DEFEND2;
Link := DEFLINK;
Obj := DEFOBJ;
END;
END MakeDefaultConf;
PROCEDURE OpenConfig (VAR Datei: File; VAR found: BOOLEAN);
BEGIN
found := FALSE;
Lookup (Datei, CONFDAT1, 0, FALSE);
IF (Datei.res = done) THEN
found := TRUE;
ELSE
Lookup (Datei, CONFDAT2, 0, FALSE);
IF (Datei.res = done) THEN
found := TRUE;
END;
END;
END OpenConfig;
PROCEDURE ReadToCR (VAR Datei : File;
VAR ZKette : ARRAY OF CHAR; VAR len : INTEGER);
BEGIN
len := 0;
Delete (ZKette, 0, HIGH (ZKette));
REPEAT
ReadByteBlock (Datei, Char[0]);
IF (Char[0] # CHR (10)) THEN
Insert (ZKette, last, Char);
INC (len);
END;
UNTIL (Char[0] = CHR (10));
END ReadToCR;
PROCEDURE ConfigLesen (VAR Konfig: CCCONFIG);
BEGIN
OpenConfig (Datei, OK);
IF (OK = FALSE) THEN
MakeDefaultConf (Konfig);
ELSE
WITH Konfig DO
ReadToCR (Datei, ZKette, len);
Copy (Editor, ZKette, 0, len);
ReadToCR (Datei, ZKette, len);
Copy (Comp1, ZKette, 0, len);
ReadToCR (Datei, ZKette, len);
Copy (End1, ZKette, 0, len);
ReadToCR (Datei, ZKette, len);
Copy (Comp2, ZKette, 0, len);
ReadToCR (Datei, ZKette, len);
Copy (End2, ZKette, 0, len);
ReadToCR (Datei, ZKette, len);
Copy (Link, ZKette, 0, len);
ReadToCR (Datei, ZKette, len);
Copy (Obj, ZKette, 0, len);
Close (Datei);
END;
END;
END ConfigLesen;
BEGIN
END GetConfig.